package co.edu.udea.iw.service;

import java.sql.Time;
import java.util.Date;
import java.util.List;

import co.edu.udea.iw.dto.Dispositivo;
import co.edu.udea.iw.dto.Prestamo;
import co.edu.udea.iw.dto.Solicitud;
import co.edu.udea.iw.dto.TipoDispositivo;
import co.edu.udea.iw.dto.Usuario;
import co.edu.udea.iw.exception.IWDaoException;
import co.edu.udea.iw.exception.IWServiceException;

/**
 * Interface que define los metodos que va a proveer el Servicio para
 * Administrador
 * 
 * @author Santiago Ruiz
 * @author Bladimir Velez
 *
 */
public interface AdministradorService {

	public Dispositivo consultarDispositivo(Integer idDispositivo)
			throws IWServiceException, IWDaoException;

	public List<Dispositivo> consultarDispositivos() throws IWServiceException,
			IWDaoException;

	public void crearDispositivo(int idDispositivo, String nombreDispositivo,
			String descripcionDispositivo, int cantidad, int disponibles,
			TipoDispositivo tipoDispositivo) throws IWDaoException;

	public void eliminarDispositivo(int idDispositivo) throws IWDaoException;

	public void modificarDispositivo(int idDispositivo,
			String nombreDispositivo, String descripcionDispositivo,
			int cantidad, int disponibles, TipoDispositivo tipoDispositivo)
			throws IWDaoException;

	public Solicitud consultarSolicitud(int idSolicitud)
			throws IWServiceException, IWDaoException;

	public List<Solicitud> consultarSolicitudes() throws IWServiceException,
			IWDaoException;

	public Prestamo consultarPrestamo(int id) throws IWServiceException,
			IWDaoException;

	public List<Prestamo> consultarPrestamos() throws IWServiceException,
			IWDaoException;

	public void crearPrestamo(int idPrestamo, Date fechaPrestamo,
			Time horaInicio, Time horaFin, Time horaEntrega, int cantidad,
			String observacion, Usuario usuario, Dispositivo dispositivo)
			throws IWServiceException, IWDaoException;

	public void modificarPrestamo(int idPrestamo, Date fechaPrestamo,
			Time horaInicio, Time horaFin, Time horaEntrega, int cantidad,
			String observacion, Usuario usuario, Dispositivo dispositivo)
			throws IWServiceException, IWDaoException;

	public void eliminarPrestamo(int idPrestamo) throws IWServiceException,
			IWDaoException;

	public TipoDispositivo consultarTipoDispositivo(String tipoD)
			throws IWServiceException, IWDaoException;

	public List<TipoDispositivo> consultarTiposDispositivos()
			throws IWServiceException, IWDaoException;

	public void crearTipoDispositivo(String tipoDispositivo, String descripcion)
			throws IWServiceException, IWDaoException;

	public void eliminarTipoDispositivo(String tipoDispositivo)
			throws IWServiceException, IWDaoException;

	public void actualizarTipoDispositivo(String tipoDispositivo,
			String descripcion) throws IWServiceException, IWDaoException;

}
